home *** CD-ROM | disk | FTP | other *** search
-
- inline equ * read filename into fcb
- clr b
- inloop pshs b
- jsr cinput get data
- puls b
- anda #$7f
- cmpa #del
- beq backc
- cmpa #bs
- beq backc
- cmpa #ctrlx
- beq dellin
- cmpa #cr
- beq endc fini
- jsr couts echo char
- sta 0,x save in buffer
- inx
- inc b
- cmp b #$1e end of buffer?
- beq endc yes force finish
- bra inloop
-
- dellin ldx #query
- jsr pstr
- bra inline start again
-
- backc cmp b #0
- beq inloop already at start of buffer
- dex
- decb back up 1 locn
- lda #bs
- jsr couts back up console
- bra inloop and continue
-
- endc clr a
- sta 0,x
- rts set terminator and exit
-
- ******************************************
- * line int handler*****************
- ******************************************
- int equ * interrupt
- lda line
- bita #1
- beq ret1 not rxd
- lda line+1 rxd int
- ldb count
- cmpb #max
- beq ret que is totally full !
- ldx inp
- sta 0,x+ save char in buffer que
- cpx #end
- bne int1
- ldx #startq
- int1 stx inp
- inc b
- stb count
- cmpb #xlev
- bne ret
- lda #xoff xoff level
- cmpa lastf already sent?
- beq ret yesd
- sta lastf
- sta fcs send an xoff
- lda #%10110101 turn on line tx
- sta line
- ret rti
-
- ret1 bit a #$80
- beq ret2 not line tx
- tst fcs
- beq txs nothing to send
- lda lastf
- sta line+1 send flow code
- txs lda #%10010101
- sta line stop tx int
- ret2 rti
-
-
-
- *DESPATCH ROUTINE HERE FOR RECEVE AND SEND
-
- KERMIT EQU * RETURN FROM KERMIT DRIVERS
-
- *any error handling and status report
- ldx #noerr
- cmpa #true
- beq kdone kermit ended succesfully
- jsr fmscls close files on flex
- lda errcod get error code
- lsl a
- ldx #errtab look up error message
- ldx a,x
-
- kdone jsr pstr error message/complete message
- jmp main
-
- errtab equ * lookup error message
- fdb err0
- fdb err1
- fdb err2
- fdb err3
- fdb err4
- fdb err5
- fdb err6
- fdb err7
-
- err0 fcc 'error 0'
- fcb 4
- err1 fcc 'Cannot receive init'
- fcb 4
- err2 fcc 'Cannot receive file header'
- fcb 4
- err3 fcc 'Cannot receive data'
- fcb 4
- err4 fcc 'Maximum retry exceeded'
- fcb 4
- err5 fcc 'Bad checksum'
- fcb 4
- err6 fcc 'Checksum incorrect, resending packet'
- fcb $0d,$0a
- fcb 4
- err7 fcc 'Program error'
- fcb 4
- noerr fcc 'Transfer completed succesfully'
- fcb 4
- ttl KL10 Error-free Reciprocol Micro-interface Transfer
- STTL Character and string definitions
-
- prom equ *
- nul EQU $00 * <null>
- soh EQU $01 * <soh>
- bs EQU $08 * <bs>
- tab EQU $09 * <tab> (ctrl/I)
- lf EQU $0a * <lf>
- ffd EQU $0c * Form feed
- cr EQU $0d * <cr>
- ctrlu EQU $15 * <ctrl/U>
- ctrlx EQU $18 *[0] <ctrl/X>
- esc EQU $1b * <esc>
- sp EQU $20 * <space>
- del EQU $7f * <del>
-
- STTL Kermit defaults for operational parameters
-
- *
- * The following are the defaults which this Kermit uses for
- * the protocol
- *
-
- dquote EQU '# * The quote character
- dpakln EQU $5f * The packet length
- dpadch EQU nul * The padding character
- dpadln EQU 0 * The padding length
- dmaxtr EQU 6 * The maximum number of tries
- debq EQU '& * The eight-bit-quote character
- deol EQU cr * The end-of-line character
- dtime equ 5 *timeout interval
-
-
- STTL Kermit data
-
- *
- * The following is data storage used by Kermit
- *
-
- mxpack EQU dpakln * Maximum packet size
- eof EQU $01 * This is the value for End-of-file
- buflen EQU $ff * Buffer length for received data
- true EQU $01 * Symbol for true return code
- false EQU $00 * Symbol for false return code
- on EQU $01 * Symbol for value of 'on' keyword
- off EQU $00 * Symbol for value of 'off' keyword
- yes EQU $01 * Symbol for value of 'yes' keyword
- no EQU $00 * Symbol for value of 'no' keyword
- fbsbit EQU $01 * Value for SEVEN-BIT FILE-BYTE-SIZE
- fbebit EQU $00 * Value for EIGHT-BIT FILE-BYTE-SIZE
- errcri EQU $01 * Error code - cannot receive init
- errcrf EQU $02 * Error code - cannot receive file-header
- errcrd EQU $03 * Error code - cannot receive data
- errmrc EQU $04 * Error code - maximum retry count exceeded
- errbch EQU $05 * Error code - bad checksum
-
- org ram
- kerbf1 rmb 2
- fcb1 rmb 20
- fcb rmb 400 file spec
- fcb2 rmb 20 remote file spec
- pdbuf RMB mxpack+20 * Packet buffer JUST TO MAKE SURE ENOUGH ROOM
- pdlen RMB 1 * Common area to place data length
- ptype RMB 1 * Common area to place current packet type
- pnum RMB 1 * Common area to put packet number received
- rstat RMB 1 * Return status
- delay RMB 1 * Amount of delay before first send
- ebqmod RMB 1 * Eight-bit-quoting mode
- datind RMB 1 * Data index into packet buffer
- chebo RMB 1 * Switch to tell if 8th-bit was on
- kerchr RMB 1 * Current character read off port
- fld RMB 1 * State of receive in rpak routine
- n RMB 1 * Message #
- numtry RMB 1 * Number of tries for this packet
- oldtry RMB 1 * Number of tries for previous packet
- maxtry RMB 1 * Maximum tries allowed for a packet
- state RMB 1 * Current state of system
- size RMB 1 * Size of present data
- chksum RMB 1 * Checksum for packet
- rtot RMB 2 * Total number of characters received
- stot RMB 2 * Total number of characters sent
- rchr RMB 2 * Number characters received, current file
- schr RMB 2 * Number of characters sent, current file
- eofinp RMB 1 * End-of-file on input indicator
- errcod RMB 1 * Error indicator
- filend rmb 1 *end of file code rcvd
-
- saddr rmb 2
- *
- * These fields are set parameters and should be kept in this
- * order to insure integrity when setting and showing values
- *
-
- srind RMB 1 * Switch to indicate which parm to print
- ebq RMB 1 debq * Eight-bit quote character (rec. and send)
- RMB 1 debq * ...
- pad RMB 1 dpadln * Number of padding characters (rec. and send)
- RMB 1 dpadln * ...
- padch RMB 1 dpadch * Padding character (receive and send)
- RMB 1 dpaddh * ...
- eol RMB 1 deol * End-of-line character (recevie and send)
- RMB 1 deol * ...
- psiz RMB 1 dpakln * Packet size (receive and send)
- RMB 1 dpakln * ...
- time RMB 2 $0000 * Time out interval (receive and send)
- quote RMB 1 dquote * Quote character (receive and send)
- RMB 1 dquote * ...
-
- *
- * Some definitions to make life easier when referencing the above
- * fields
- *
-
- rebq EQU ebq * Receive eight-bit-quote char
- sebq EQU ebq+1 * Send eight-bit-quote char
- rpad EQU pad * Receive padding amount
- spad EQU pad+1 * Send padding amount
- rpadch EQU padch * Receive padding character
- spadch EQU padch+1 * Send padding character
- reol EQU eol * Receive end-of-line character
- seol EQU eol+1 * Send end-of-line character
- rpsiz EQU psiz * Receive packet length
- spsiz EQU psiz+1 * Send packet length
- rtime EQU time * Receive time out interval
- stime EQU time+1 * Send time out interval
- rquote EQU quote * Receive quote character
- squote EQU quote+1 * Send quote character
-
-
- org prom
-
-
- *************************
- close equ * close down server
- lda #$00
- sta numtry
- closen lda numtry
- inc numtry
- cmpa maxtry
- bne closec
- lda #errmrc to many tries
- sta errcod
- lda #false exit to menu with error
- jmp kermit
-
- closec lda #'G
- sta ptype set up close packet
- ldx #pdbuf
- stx kerbf1
- lda #'F
- sta 0,x
- lda #1
- sta pdlen
- clr a
- sta n packet #0 for closing
- sta pnum
- jsr spak send it
- jsr rpak get back an ack?
- lda ptype
- cmpa #'Y
- bne closen no
- lda n
- cmpa pnum right one?
- bne closen no
- lda #true
- jmp term
-
-
-